package com.bjsxt;
/*1，通过实现Runnable接口实现多线程*/
public class RunnableTest implements Runnable{
    //构造方法
    public RunnableTest(){
        //输出的是main方法，而不是Thread-0，因为RunnableTest类不是线程，没有
        //继承Thread，而是实现Runnable接口，在main 方法中启动的就是一个
        //普通的RunnableTest类
        System.out.println(Thread.currentThread().getName());
    }
    //线程体，2，重写run()
    //getName()是Thread类的方法，所以不可以直获取getName()
    //使用Thread类下的currentThread()方法，返回Thread的对象，从而获得名字
    @Override
    public void run() {
        System.out.println("线程启动"+Thread.currentThread().getName());
        for(int i=0;i<30;i++){
            System.out.println(Thread.currentThread().getName()+" "+i);
        }
        System.out.println("线程结束"+Thread.currentThread().getName());
    }
       //3，线程在主线程main中启动。
    public static void main(String[] args) {
       //不可以实现类后直接调用start()方法，因这方法在Thread类中，
        // 不是在Runnable接口中
       /* RunnableTest rt = new RunnableTest();
        rt.start();*/
        System.out.println("主线程开始");
        RunnableTest r1 = new RunnableTest();
        //将对象放到Thread中
        Thread t1 = new Thread(r1);
        t1.start();
        //启动多一个线程
        //Thread t2 = new Thread(r1);  不是直接放r1进去，
        // 要在Thread构造方法中实例化类（new RunnableTest())
        Thread t2 = new Thread(new RunnableTest());
        t2.start();
        System.out.println("主线程结束");
        //主线程结束后，才启动线程
    }
}
